package Question20_7;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Set;
public class Question {
public static void printLongestWord(String arr[]) {
HashMap<String, Boolean> map = new HashMap<String, Boolean>();
for (String str : arr) {
map.put(str, true);
}
Arrays.sort(arr, new LengthComparator()); // Sort by length
for (int i = 0; i < arr.length; i++) {
String str = new String(arr[i]);
Set<String> keys = map.keySet();
String keyArr[] = new String[keys.size()];
int k = 0;
for (String s : keys){
keyArr[k] = new String(s);
k++;
}
/* Sort so that we get the longest string to replace */
Arrays.sort(keyArr, new LengthComparator());
for (String j : keyArr){
if (j.equals(arr[i])) continue;
str = str.replaceAll(j, "");
}
/* If we get a string of size 0, it�s the required word */
if (str.length() == 0) {
System.out.println("Longest word: " + arr[i]);
return;
}
}
System.out.println("No such word");
}
public static void main(String[] args) {
String arr[] = {"test", "tester", "testertest", "testing",
"apple", "seattle", "banana", "batting", "cat",
"bat", "testingtester", "testbattingcat"};
printLongestWord(arr);
}
}